package contable.aplicacion.contabilidad.inventario;

import contable.dominio.Cuenta;
import contable.dominio.Registro;
import java.util.Date;

/**
 *
 * @author jaime
 */
public class ComprasCredito extends Compras {

    /**
     * Registrar el valor de una compra al credito
     *
     * @param CodInv El código del inventario
     * @param valor El valor con que se afectará las cuentas
     */
    @Override
    protected void registrarCompra(String CodInv, double valor) {
        Cuenta inventario = new Cuenta();
        Cuenta cuentasxPagar = new Cuenta();
        fsql.rollback(inventario, CodInv);
        fsql.rollback(cuentasxPagar, "214-001-000-000");
        inventario.cargar(valor);
        cuentasxPagar.abonar(valor);
        fsql.commit(inventario);
        ivaAcreditable(cuentasxPagar, calcularIva(valor));
        fsql.commit(cuentasxPagar);
        registro = new Registro(new Date(), "Se registro la compra de " + inventario.getNombre() + " al credito", valor, periodo, inventario, cuentasxPagar);
        fsql.commit(registro);
    }

    /**
     * Registrar el IVA acreditable de una compra al credito
     * <table border="1">
     *   <tr>
     *     <th>Código</th>
     *     <th>Nombre</th>
     *     <th>Debe</th>
     *     <th>Haber</th>
     *   </tr>
     *   <tr>
     *     <td>151-002-002-000</td>
     *     <td>IVA CREDITO FISCAL</td>
     *     <td>valor</td>
     *     <td></td>
     *   </tr>
     *   <tr>
     *     <td>214-001-000-000</td>
     *     <td>CUENTAS POR PAGAR</td>
     *     <td></td>
     *     <td>valor</td>
     *   </tr>
     * </table>
     *
     * @param valor El valor con que se afectará las cuentas
     */
    @Override
    protected void ivaAcreditable(Cuenta cuentasxPagar, double valor) {
        Cuenta ivaAcreditable = new Cuenta();
        fsql.rollback(ivaAcreditable, "151-002-002-000");
        ivaAcreditable.cargar(valor);
        cuentasxPagar.abonar(valor);
        fsql.commit(ivaAcreditable);
    }
}
